#ifndef DATATYPE_H
#define DATATYPE_H

#include <QString>


// 设备信息结构
//
struct DeviceInfo
{
    QString strNetDevname;
    QString strNetDevDescribe;
    QString strIPV4FamilyName;
    QString strIPV4Addr;
    QString strIPV6FamilyName;
    QString strIPV6Addr;
};


// 树形显示结果的数据结构
struct AnalyseProtoType
{
    QString 	strEthTitle;		// 数据链路层
    QString 	strDMac;
    QString 	strSMac;
    QString 	strType;

    QString 	strIPTitle;			// 网络层
    QString 	strVersion;
    QString 	strHeadLength;
    QString 	strLength;
    QString 	strNextProto;
    QString 	strSIP;
    QString 	strDIP;

    QString 	strTranProto;		// 传输层
    QString 	strSPort;
    QString 	strDPort;

    QString 	strAppProto;		// 应用层
    QByteArray  strSendInfo;

    void init()
    {
        strEthTitle   = "数据链路层 - Ethrmet II";
        strDMac       = "目标MAC地址：";
        strSMac       = "来源MAC地址：";
        strType       = "以太网类型：Internet Protocol (0x0800)";

        strIPTitle    = "网络层 - IP 协议 (Internet Protocol)";
        strVersion    = "版本：IPv4";
        strHeadLength = "协议头长度：";
        strLength     = "总长：";
        strNextProto  = "高层协议类型：";
        strSIP        = "来源IP地址：";
        strDIP        = "目标IP地址：";

        strTranProto  = "传输层 - ";
        strSPort      = "来源端口号：";
        strDPort      = "目标端口号：";

        strAppProto   = "应用层 - ";
    }
};

// 网络数据结构
struct DataInfo
{
    QString				strNum;			// 序号
    QString 			strTime;		// 时间
    QString 			strSIP;			// 来源 IP 地址，格式 IP:port
    QString 			strDIP;			// 目标 IP 地址，格式 IP:port
    QString 			strProto;		// 使用的协议
    QString				strLength;		// 数据长度
    QByteArray  		strData;		// 原始数据
    AnalyseProtoType	protoInfo;		// 树形显示结果的数据结构
};


// 程序配置信息类
struct SettingInfo
{
    int  		iOpenDevNum;			// 要打开的适配器编号
    bool 		bPromiscuous;			// 是否以混杂模式打开适配器
    bool 		bAutoBegin;				// 选择适配器后自动捕获
    int			iDataLimit;				// 捕获数据包大小限制
    std::string	filterString;			// 过滤器设置字符串

    SettingInfo()
    {
        iOpenDevNum  = 0;
        bPromiscuous = true;
        bAutoBegin   = false;
        iDataLimit   = 65536;
        filterString = "ip";
    }
};



#endif // DATATYPE_H
